{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                持买仓量\n",
      "date       variety 持买仓量期货公司         \n",
      "2018-10-22 A       海通期货       4115.0\n",
      "           AG      海通期货      24758.0\n",
      "           AL      海通期货       6832.0\n",
      "           AP      海通期货       8181.0\n",
      "           AU      海通期货       3649.0\n",
      "           B       海通期货       2203.0\n",
      "           BU      海通期货       6787.0\n",
      "           C       海通期货       7346.0\n",
      "           CF      海通期货       7164.0\n",
      "           CU      海通期货       5686.0\n",
      "           CY      海通期货         28.0\n",
      "           FG      海通期货       5024.0\n",
      "           FU      海通期货       2162.0\n",
      "           HC      海通期货       6260.0\n",
      "           I       海通期货      16098.0\n",
      "           IC      海通期货       1568.0\n",
      "           IF      海通期货       3798.0\n",
      "           IH      海通期货       1088.0\n",
      "           J       海通期货      15953.0\n",
      "           JD      海通期货       1495.0\n",
      "           JM      海通期货      12056.0\n",
      "           L       海通期货       4363.0\n",
      "           M       海通期货      22201.0\n",
      "           MA      海通期货      43286.0\n",
      "           NI      海通期货       5782.0\n",
      "           OI      海通期货       6250.0\n",
      "           P       海通期货      11597.0\n",
      "           PB      海通期货        739.0\n",
      "           PP      海通期货       5535.0\n",
      "           PTA     海通期货      20798.0\n",
      "           RB      海通期货      63043.0\n",
      "           RM      海通期货      22975.0\n",
      "           RS      海通期货          0.0\n",
      "           RU      海通期货       5431.0\n",
      "           SF      海通期货       3562.0\n",
      "           SM      海通期货       2467.0\n",
      "           SN      海通期货        199.0\n",
      "           SR      海通期货       6652.0\n",
      "           T       海通期货       1445.0\n",
      "           TF      海通期货        189.0\n",
      "           ZC      海通期货       2948.0\n",
      "           ZN      海通期货       8423.0\n",
      "                                持卖仓量\n",
      "date       variety 持卖仓量期货公司         \n",
      "2018-10-22 AG      海通期货       8337.0\n",
      "           AL      海通期货      10728.0\n",
      "           AP      海通期货       4226.0\n",
      "           AU      海通期货       1620.0\n",
      "           B       海通期货       1000.0\n",
      "           BU      海通期货       8541.0\n",
      "           CF      海通期货      10209.0\n",
      "           CS      海通期货       3318.0\n",
      "           CU      海通期货       7707.0\n",
      "           CY      海通期货         37.0\n",
      "           FG      海通期货       4784.0\n",
      "           FU      海通期货       1036.0\n",
      "           HC      海通期货      21587.0\n",
      "           I       海通期货       5969.0\n",
      "           IC      海通期货       2762.0\n",
      "           IF      海通期货       3220.0\n",
      "           IH      海通期货        810.0\n",
      "           J       海通期货      19419.0\n",
      "           JD      海通期货       1336.0\n",
      "           JM      海通期货      10177.0\n",
      "           L       海通期货       9477.0\n",
      "           LR      海通期货        220.0\n",
      "           M       海通期货      17751.0\n",
      "           MA      海通期货      50812.0\n",
      "           NI      海通期货      12117.0\n",
      "           OI      海通期货       4893.0\n",
      "           P       海通期货       4934.0\n",
      "           PB      海通期货        758.0\n",
      "           PP      海通期货      14274.0\n",
      "           PTA     海通期货      23538.0\n",
      "           RB      海通期货      70254.0\n",
      "           RM      海通期货      22241.0\n",
      "           RS      海通期货          3.0\n",
      "           RU      海通期货      11289.0\n",
      "           SM      海通期货       5015.0\n",
      "           SN      海通期货       1205.0\n",
      "           T       海通期货       6041.0\n",
      "           TF      海通期货       1909.0\n",
      "           WH      海通期货        148.0\n",
      "           ZC      海通期货       3003.0\n",
      "           ZN      海通期货       7390.0\n",
      "          date variety  会员简称     持买仓量     持卖仓量      净持仓\n",
      "0   2018-10-22       A  海通期货   4115.0      0.0   4115.0\n",
      "1   2018-10-22      AG  海通期货  24758.0   8337.0  16421.0\n",
      "2   2018-10-22      AL  海通期货   6832.0  10728.0  -3896.0\n",
      "3   2018-10-22      AP  海通期货   8181.0   4226.0   3955.0\n",
      "4   2018-10-22      AU  海通期货   3649.0   1620.0   2029.0\n",
      "5   2018-10-22       B  海通期货   2203.0   1000.0   1203.0\n",
      "6   2018-10-22      BU  海通期货   6787.0   8541.0  -1754.0\n",
      "7   2018-10-22       C  海通期货   7346.0      0.0   7346.0\n",
      "8   2018-10-22      CF  海通期货   7164.0  10209.0  -3045.0\n",
      "9   2018-10-22      CU  海通期货   5686.0   7707.0  -2021.0\n",
      "10  2018-10-22      CY  海通期货     28.0     37.0     -9.0\n",
      "11  2018-10-22      FG  海通期货   5024.0   4784.0    240.0\n",
      "12  2018-10-22      FU  海通期货   2162.0   1036.0   1126.0\n",
      "13  2018-10-22      HC  海通期货   6260.0  21587.0 -15327.0\n",
      "14  2018-10-22       I  海通期货  16098.0   5969.0  10129.0\n",
      "15  2018-10-22      IC  海通期货   1568.0   2762.0  -1194.0\n",
      "16  2018-10-22      IF  海通期货   3798.0   3220.0    578.0\n",
      "17  2018-10-22      IH  海通期货   1088.0    810.0    278.0\n",
      "18  2018-10-22       J  海通期货  15953.0  19419.0  -3466.0\n",
      "19  2018-10-22      JD  海通期货   1495.0   1336.0    159.0\n",
      "20  2018-10-22      JM  海通期货  12056.0  10177.0   1879.0\n",
      "21  2018-10-22       L  海通期货   4363.0   9477.0  -5114.0\n",
      "22  2018-10-22       M  海通期货  22201.0  17751.0   4450.0\n",
      "23  2018-10-22      MA  海通期货  43286.0  50812.0  -7526.0\n",
      "24  2018-10-22      NI  海通期货   5782.0  12117.0  -6335.0\n",
      "25  2018-10-22      OI  海通期货   6250.0   4893.0   1357.0\n",
      "26  2018-10-22       P  海通期货  11597.0   4934.0   6663.0\n",
      "27  2018-10-22      PB  海通期货    739.0    758.0    -19.0\n",
      "28  2018-10-22      PP  海通期货   5535.0  14274.0  -8739.0\n",
      "29  2018-10-22     PTA  海通期货  20798.0  23538.0  -2740.0\n",
      "30  2018-10-22      RB  海通期货  63043.0  70254.0  -7211.0\n",
      "31  2018-10-22      RM  海通期货  22975.0  22241.0    734.0\n",
      "32  2018-10-22      RS  海通期货      0.0      3.0     -3.0\n",
      "33  2018-10-22      RU  海通期货   5431.0  11289.0  -5858.0\n",
      "34  2018-10-22      SF  海通期货   3562.0      0.0   3562.0\n",
      "35  2018-10-22      SM  海通期货   2467.0   5015.0  -2548.0\n",
      "36  2018-10-22      SN  海通期货    199.0   1205.0  -1006.0\n",
      "37  2018-10-22      SR  海通期货   6652.0      0.0   6652.0\n",
      "38  2018-10-22       T  海通期货   1445.0   6041.0  -4596.0\n",
      "39  2018-10-22      TF  海通期货    189.0   1909.0  -1720.0\n",
      "40  2018-10-22      ZC  海通期货   2948.0   3003.0    -55.0\n",
      "41  2018-10-22      ZN  海通期货   8423.0   7390.0   1033.0\n",
      "42  2018-10-22      CS  海通期货      0.0   3318.0  -3318.0\n",
      "43  2018-10-22      LR  海通期货      0.0    220.0   -220.0\n",
      "44  2018-10-22      WH  海通期货      0.0    148.0   -148.0\n",
      "          date variety  contractValue\n",
      "0   2018-10-22       A        37230.0\n",
      "1   2018-10-22      AG        53460.0\n",
      "2   2018-10-22      AL        70855.0\n",
      "3   2018-10-22      AP       105810.0\n",
      "4   2018-10-22      AU       276000.0\n",
      "5   2018-10-22       B        34800.0\n",
      "6   2018-10-22      BU        36550.0\n",
      "7   2018-10-22       C        19150.0\n",
      "8   2018-10-22      CF        77735.0\n",
      "9   2018-10-22      CS        24040.0\n",
      "10  2018-10-22      CU       252375.0\n",
      "11  2018-10-22      CY       121880.0\n",
      "12  2018-10-22      FB        50500.0\n",
      "13  2018-10-22      FG        26460.0\n",
      "14  2018-10-22      FU        35600.0\n",
      "15  2018-10-22      HC        38840.0\n",
      "16  2018-10-22       I        52400.0\n",
      "17  2018-10-22      IC       862000.0\n",
      "18  2018-10-22      IF       986700.0\n",
      "19  2018-10-22      IH       765900.0\n",
      "20  2018-10-22       J       235700.0\n",
      "21  2018-10-22      JD        42170.0\n",
      "22  2018-10-22      JM        81600.0\n",
      "23  2018-10-22      JR        58660.0\n",
      "24  2018-10-22       L        47105.0\n",
      "25  2018-10-22      LR        54200.0\n",
      "26  2018-10-22       M        33070.0\n",
      "27  2018-10-22      MA        33180.0\n",
      "28  2018-10-22      NI       104238.0\n",
      "29  2018-10-22      OI        67420.0\n",
      "30  2018-10-22       P        48060.0\n",
      "31  2018-10-22      PB        91730.0\n",
      "32  2018-10-22      PM       127000.0\n",
      "33  2018-10-22      PP        50030.0\n",
      "34  2018-10-22      RB        41330.0\n",
      "35  2018-10-22      RI        46600.0\n",
      "36  2018-10-22      RM        24990.0\n",
      "37  2018-10-22      RU        60465.0\n",
      "38  2018-10-22      SF        34270.0\n",
      "39  2018-10-22      SM        43925.0\n",
      "40  2018-10-22      SN       147420.0\n",
      "41  2018-10-22      SR        52060.0\n",
      "42  2018-10-22       T       950000.0\n",
      "43  2018-10-22     PTA        34670.0\n",
      "44  2018-10-22      TF       980000.0\n",
      "45  2018-10-22      TS      1980000.0\n",
      "46  2018-10-22       V        32185.0\n",
      "47  2018-10-22      WH        51040.0\n",
      "48  2018-10-22      WR        40020.0\n",
      "49  2018-10-22       Y        57990.0\n",
      "50  2018-10-22      ZC        63400.0\n",
      "51  2018-10-22      ZN       110660.0\n",
      "          date variety         净持仓价值\n",
      "38  2018-10-22       T -4.366200e+09\n",
      "39  2018-10-22      TF -1.685600e+09\n",
      "15  2018-10-22      IC -1.029228e+09\n",
      "18  2018-10-22       J -8.169362e+08\n",
      "24  2018-10-22      NI -6.603477e+08\n",
      "13  2018-10-22      HC -5.953007e+08\n",
      "9   2018-10-22      CU -5.100499e+08\n",
      "28  2018-10-22      PP -4.372122e+08\n",
      "33  2018-10-22      RU -3.542040e+08\n",
      "30  2018-10-22      RB -2.980306e+08\n",
      "2   2018-10-22      AL -2.760511e+08\n",
      "23  2018-10-22      MA -2.497127e+08\n",
      "21  2018-10-22       L -2.408950e+08\n",
      "8   2018-10-22      CF -2.367031e+08\n",
      "36  2018-10-22      SN -1.483045e+08\n",
      "35  2018-10-22      SM -1.119209e+08\n",
      "29  2018-10-22     PTA -9.499580e+07\n",
      "42  2018-10-22      CS -7.976472e+07\n",
      "6   2018-10-22      BU -6.410870e+07\n",
      "43  2018-10-22      LR -1.192400e+07\n",
      "44  2018-10-22      WH -7.553920e+06\n",
      "40  2018-10-22      ZC -3.487000e+06\n",
      "27  2018-10-22      PB -1.742870e+06\n",
      "10  2018-10-22      CY -1.096920e+06\n",
      "11  2018-10-22      FG  6.350400e+06\n",
      "19  2018-10-22      JD  6.705030e+06\n",
      "31  2018-10-22      RM  1.834266e+07\n",
      "12  2018-10-22      FU  4.008560e+07\n",
      "5   2018-10-22       B  4.186440e+07\n",
      "25  2018-10-22      OI  9.148894e+07\n",
      "41  2018-10-22      ZN  1.143118e+08\n",
      "34  2018-10-22      SF  1.220697e+08\n",
      "7   2018-10-22       C  1.406759e+08\n",
      "22  2018-10-22       M  1.471615e+08\n",
      "0   2018-10-22       A  1.532014e+08\n",
      "20  2018-10-22      JM  1.533264e+08\n",
      "17  2018-10-22      IH  2.129202e+08\n",
      "26  2018-10-22       P  3.202238e+08\n",
      "37  2018-10-22      SR  3.463031e+08\n",
      "3   2018-10-22      AP  4.184786e+08\n",
      "14  2018-10-22       I  5.307596e+08\n",
      "4   2018-10-22      AU  5.600040e+08\n",
      "16  2018-10-22      IF  5.703126e+08\n",
      "1   2018-10-22      AG  8.778667e+08\n",
      "32  2018-10-22      RS           NaN\n",
      "-7408918100.0\n"
     ]
    },
    {
     "data": {
      "image/png": "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DwAAAAA7z1Td4wcAAACASTbpT/Xab7/9+rx58yb7bQAAAACeMb7xjW882Hvff1vrJj38zJs3LzfffPNkvw0AAADAM0Zr7d7tWedSLwAAAICihB8AAACAooQfAAAAgKIm/R4/AAAAwDPD+vXrs2rVqjz66KNTPUoZs2fPzpw5czJz5swJHS/8AAAAAEOxatWq7L333pk3b15aa1M9zm6v957Vq1dn1apVOeSQQyZ0Dpd6AQAAAEPx6KOPZt999xV9hqS1ln333XeHdlAJPwAAAMDQiD7DtaOfp/ADAAAAUJTwAwAAALAdrrjiitx0001P+fMNGzZs/rr3/pTrtrx0a/369Vm/fv1wBtwKN3cGAAAAJsW8RZcN9Xz3LD12m2s2bdqU9evXZ9asWdm4cWNe8YpX5Itf/GIOPPDAJ6zbsGFD3vSmN+WKK67Y/NorX/nK3HDDDVs9749+9KOcc845Oeigg/KFL3whs2fP/ok1Z5xxRk4++eSMjo7mkksuyXXXXZcLLrjgJ9a95S1vyeLFi3PwwQfn8ssvz/XXX5/zzjsvGzduzMEHH5wZM4aXa+z4AQAAAMq44oorctJJJ2Xjxo353d/93axbty7vfOc7s99++2X58uVJxuLQ9OnTs379+jz22GM555xz8rrXvS533HFHRkdHc+KJJz7hnOvWrcspp5ySxYsX58wzz8wv//Iv56GHHnrCmrVr1+aWW27Ja1/72qxfvz6f+tSn8uCDD+aaa655wrq77rors2bNyrp163LxxRfnyiuvzJo1a3LJJZfk4osvziOPPDLUz8OOHwAAAKCMN7zhDbn11lvzoQ99KBdeeGEuuOCCbNq0Keeee2723XfffOtb38qdd96ZCy+8MHfccUfOPPPMfPKTn8z06dMzOjqaa6+9No899tjm89199905/fTT89a3vjUnn3xykrFLtUZGRnL22WfnHe94R/bZZ598/OMfz2GHHZZp06blzDPPzHve8568+c1vzgknnJAHHnggb3vb25Ik5557bg499NDMnz8/v/d7v5dVq1Zl2rRpefjhh/PBD34we++991A/D+EHAAAAKGXRokW5++67c/zxx2f16tV5//vfnz/4gz/IihUrcvnll+f3f//3c/zxx2d0dDTnnntuFixYkGnTpmXFihWZP39+kuTUU0/NAQcckNNPPz0nnHBCLr300lx66aWb3+O8887LpZdemgMPPDAvfelL87nPfS6/+Iu/mFNPPTXz5s3L6OhoZs2alUWLFuUTn/hENmzYkJkzZ2bFihU55JBDMm3atPz4xz/ORRddlCS57LLLfmIX0TAIPwAAAEApK1asyFVXXZW/+qu/yp577pnvfe97+ehHP5qHH344DzzwQObMmZM3vvGNuf322/PZz342l19++eb76syfPz9XXHFFNm3alNZaVqxYkSuvvDIHH3xwzjnnnCRjYemggw7KJZdckiT5+te/nqVLl2b58uVZunRprrrqqnzpS1/KaaedlkWLFuWGG25I7z0rV67Mxz72sVx77bVJkkceeSTf+c53kiT333//pHwWwg8AAABQyvnnn5+FCxfmjDPOyB577JHR0dF85StfyY033pivfvWraa3l7LPPzmGHHZZFixblqKOOyqxZs5Ikt956a44++uicc845OfbYY7Pvvvtm+vTpm8+9du3arF69+gk3YH75y1+eBx98MMuXL8/zn//8rF27Ni94wQuSJM961rOSJK21HHbYYVm7du3m4/7t3/4tn/nMZ5Ik9913XxYsWDD0z0L4AQAAAMr47ne/m3vvvTcve9nLsmDBgs2XVx1zzDGZNm1aTjzxxJx22mk588wzMzo6mj333DOnnHJKDjrooBx33HGZP39+rrzyyqc8/+mnn5699torhx9+eNasWZPnPOc5W53hla985TZn3W+//fKWt7wlSfJP//RPE/+PfhoTDj+ttQOSXNJ7f80Q5wEAAACK2J7Hrw/b5z//+Zx11lnZc88987WvfS1JNu/42fIR7Bs3bkxrLUlyzDHHZPHixTnuuOOyadOmnzhnay0//OEPN58/SW666aYsXrx4cyR6/Ljvf//7ue666/LhD394q/P13rNp06Zs3Lgxz33uc/PqV786STaff+PGjU/YYbSjJhR+Wmv7JLkwyV5DmwQAAABgB33gAx94wveLFy/OXXfdlZkzZ25+bf369XnVq16Vt7/97UmSOXPm5KKLLspZZ52V3vtPnPPII4/MsmXLNkeaJNljjz1y7rnnbv5+3bp12bBhQ97//vfnIx/5SKZNm5YkWbNmzRPOtW7dujz44IM55phjsv/++2fJkiWbf3bTTTdlw4YNm58eNgxta/9B2zyoteckaUn+pvc++nRrR0ZG+s033zyx6QAAAIDdxsqVK3PooYdO9RhPcMstt2TOnDl53vOeN9WjTNjWPtfW2jd67yPbOnZCO35672vG32SrP2+tLUyyMEnmzp07kbcAAAAAdkO996fsBVPhiCOOmOoRdshENuxsadqQ5niC3vuy3vtI731k//33n4y3AAAAAHYxs2fPzurVq3c4VjCm957Vq1c/4d5Eg/JULwAAAGAo5syZk1WrVuWBBx6Y6lHKmD17dubMmTPh44UfAAAAYChmzpyZQw45ZKrHYAs7dKnXtm7sDAAAAMDUmZR7/AAAAAAw9YQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKJmTPUAAAAAALuCeYsuG2j9PUuPnaRJhseOHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKKEHwAAAICihB8AAACAooQfAAAAgKJmTPUAAAAAANty4DXfHGj9fUcdPkmT7F7s+AEAAAAoyo4fAAAAYIdcdfWLBj7m9UffNQmT8GR2/AAAAAAUJfwAAAAAFCX8AAAAABTlHj8AAABQ2JIlS3bKMeya7PgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKGrGVA8AAAAAz2SrFl0/0Po5S18zSZNQkR0/AAAAAEUJPwAAAABFCT8AAAAARQk/AAAAAEUJPwAA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AAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAACWOzm0AAAc20lEQVQAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgBAAAAKEr4AQAAAChK+AEAAAAoSvgB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\n",
      "text/plain": [
       "<Figure size 1440x1152 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pymongo\n",
    "import pandas as pd\n",
    "import matplotlib as plt\n",
    "from pandas import Series,DataFrame\n",
    "pd.set_option('display.width', None)  # 设置字符显示宽度\n",
    "pd.set_option('display.max_rows', None)  # 设置显示最大行\n",
    "pd.set_option('display.max_columns', None)  # 设置显示最大行\n",
    "\n",
    "#连接数据库\n",
    "client = pymongo.MongoClient('localhost',27017)\n",
    "futures = client.futures\n",
    "\n",
    "\n",
    "market = futures.market\n",
    "unit = futures.unit\n",
    "position = futures.position\n",
    "#加载数据\n",
    "market = DataFrame(list(market.find()))\n",
    "unit = DataFrame(list(unit.find()))\n",
    "position = DataFrame(list(position.find()))\n",
    "\n",
    "\n",
    "# #类型转换\n",
    "# market['set_close'] = market['set_close'].astype(float)\n",
    "# unit['unit'] = unit['unit'].astype(float)\n",
    "\n",
    "#大写字母\n",
    "position['variety']=position['variety'].str.upper()\n",
    "\n",
    "#删除/选取某行含有特殊数值的列\n",
    "position=position.set_index('名次')\n",
    "\n",
    "#选择需要显示的字段\n",
    "data1=market[['date','variety','set_close']]\n",
    "\n",
    "data2=unit[[ 'variety','unit']]\n",
    "position=position[['date','variety','symbol','持买仓量期货公司','持买仓量', '持买仓量增减','持卖仓量期货公司','持卖仓量', '持卖仓量增减']]\n",
    "# print(position.head())\n",
    "\n",
    "#查询会员\n",
    "members='海通期货'\n",
    "data3=position[(position['持买仓量期货公司'] == members)]\n",
    "#汇总合约\n",
    "data3=data3[['date','variety','持买仓量期货公司','持买仓量']]\n",
    "data3=data3.groupby(['date','variety','持买仓量期货公司'])[['持买仓量']].sum()\n",
    "data4=position[(position['持卖仓量期货公司'] == members)]\n",
    "# print(data4.head())\n",
    "data4=data4[['date','variety','持卖仓量期货公司','持卖仓量']]\n",
    "data4=data4.groupby(['date','variety','持卖仓量期货公司'])[['持卖仓量']].sum()\n",
    "print(data3)\n",
    "print(data4)\n",
    "#并集\n",
    "data5=pd.merge(data3,data4, on=['date','variety'],how='outer')\n",
    "data5['会员简称']=data5.apply(lambda x: members,axis=1)\n",
    "#nan缺失值填充fillna()为0\n",
    "data5=data5.fillna(0)\n",
    "data5['净持仓']=data5.apply(lambda x: x['持买仓量']-x['持卖仓量'],axis=1)\n",
    "#选择需要显示的字段\n",
    "data5=data5[['会员简称','持买仓量','持卖仓量','净持仓']]\n",
    "data5=data5.reset_index(['variety','date'])\n",
    "print(data5)\n",
    "\n",
    "#合约价值\n",
    "contractValue=pd.merge(data1,data2,how='left',sort=False).drop_duplicates()\n",
    "contractValue['contractValue'] = contractValue.apply(lambda x: x['set_close']*x['unit'],axis=1)\n",
    "contractValue=contractValue[['date','variety','contractValue']]\n",
    "#值替换replace()\n",
    "contractValue=contractValue.replace(['TA'],'PTA')\n",
    "print(contractValue)\n",
    "# contractValue.set_index(['date','variety'], inplace = True)\n",
    "sz=pd.merge(data5,contractValue,on=['date','variety'],how='left')\n",
    "#净持仓价值\n",
    "sz['净持仓价值']=sz.apply(lambda x: x['净持仓']*x['contractValue'],axis=1)\n",
    "sz=sz[['date','variety','净持仓价值']]\n",
    "sz=sz.sort_values(by='净持仓价值')\n",
    "print(sz)\n",
    "sz.plot.bar(x='variety',y='净持仓价值',figsize=(20,16),title=members)\n",
    "print(sz['净持仓价值'].sum())\n",
    "\n",
    "\n",
    "#二行即可搞定画图中文乱码\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus']=False #用来正常显示负号\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
